﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;

namespace OddUserManager.Model
{
    public class JCMatch : Entity
    {
        public int MatchId { get; set; }

        public string Issue { get; set; }
        public int FiveHundredMatchId { get; set; }

        public int FiveSeasonId { get; set; }

        [JsonConverter(typeof(LongDateTimeConvert))]
        public DateTime JCDate { get; set; }
        public string MatchNumber { get; set; }

        [JsonConverter(typeof(LongDateTimeConvert))]
        public DateTime MatchTime { get; set; }
        public string TournamentName { get; set; }
        public string TournamanetId { get; set; }
        public string HomeTeamName { get; set; }
        public string HomeTeamId { get; set; }

        public string AwayTeamName { get; set; }
        public string AwayTeamId { get; set; }
        public string HalfCourtScore { get; set; }

        public string WholeScore { get; set; }
        [JsonConverter(typeof(LongDateTimeConvert))]
        public DateTime StopSellTime { get; set; }
        public string SellingStatus { get; set; }
        public string HomeTeamFullName { get; set; }
        public string AwayTeamFullName { get; set; }
        public int HomeScore { get; set; }
        public int AwayScore { get; set; }

        public List<JCHadOdds> JCHadOddsList { get; set; }

        public List<JCTTGOdds> JCTTGOddsList { get; set; }
        public List<JCHAFUOdds> JCHAFUOddsList { get; set; }
        public List<JCScoreOdds> JCScoreOddsList { get; set; }

        public List<MergeCutOdds> CutOddsList { get; set; }
    }


    public class JCMatchOddDistributionGraph
    {
        public int MatchId { get; set; }
        public int HomeCount { get; set; }
        public int DrawCount { get; set; }
        public int LoseCount { get; set; }

        public int LetBallHomeCount { get; set; }
        public int LetBallDrawCount { get; set; }
        public int LetBallLoseCount { get; set; }

        public List<ReportBetDetailOdd> JCMatchSimpleSelectedOddList { get; set; }
    }
    public class JCTTGOdds
    {
        public int OddId { get; set; }

        public int MatchId { get; set; }
        public string ScoreOddsCode { get; set; }
        public string CanSingleBet { get; set; }
        public string FixedOdds { get; set; }
        public string SellingStatus { get; set; }
        public decimal S0 { get; set; }
        public decimal S1 { get; set; }
        public decimal S2 { get; set; }
        public decimal S3 { get; set; }
        public decimal S4 { get; set; }
        public decimal S5 { get; set; }
        public decimal S6 { get; set; }
        public decimal S7 { get; set; }
        public DateTime ReleaseTime { get; set; }
    }

    public class JCHadOdds
    {
        public int OddId { get; set; }

        public int MatchId { get; set; }
        public string ScoreOddsCode { get; set; }
        public string CanSingleBet { get; set; }
        public string FixedOdds { get; set; }
        public string SellingStatus { get; set; }
        public decimal HomeOdds { get; set; }
        public decimal DrawOdds { get; set; }
        public decimal AwayOdds { get; set; }
        [JsonConverter(typeof(LongDateTimeConvert))]
        public DateTime ReleaseTime { get; set; }
    }

    public class JCHAFUOdds
    {
        public int OddId { get; set; }

        public int MatchId { get; set; }
        public string ScoreOddsCode { get; set; }
        public string CanSingleBet { get; set; }
        public string FixedOdds { get; set; }
        public string SellingStatus { get; set; }
        public decimal AA { get; set; }
        public decimal AD { get; set; }
        public decimal AH { get; set; }
        public decimal DA { get; set; }
        public decimal DD { get; set; }
        public decimal DH { get; set; }
        public decimal HA { get; set; }
        public decimal HD { get; set; }
        public decimal HH { get; set; }
        [JsonConverter(typeof(LongDateTimeConvert))]
        public DateTime ReleaseTime { get; set; }
    }

    public class JCScoreOdds
    {
        public int OddId { get; set; }

        public int MatchId { get; set; }
        public string ScoreOddsCode { get; set; }
        public string CanSingleBet { get; set; }
        public string FixedOdds { get; set; }
        public string SellingStatus { get; set; }

        public DateTime ReleaseTime { get; set; }

        public decimal ZeroXZero { get; set; }

        public decimal ZeroXOne { get; set; }

        public decimal ZeroXTwo { get; set; }

        public decimal ZeroXThree { get; set; }

        public decimal ZeroXFour { get; set; }

        public decimal ZeroXFive { get; set; }

        public decimal OneXZero { get; set; }

        public decimal OneXOne { get; set; }

        public decimal OneXTwo { get; set; }

        public decimal OneXThree { get; set; }

        public decimal OneXFour { get; set; }

        public decimal OneXFive { get; set; }

        public decimal TwoXZero { get; set; }

        public decimal TwoXOne { get; set; }

        public decimal TwoXTwo { get; set; }

        public decimal TwoXThree { get; set; }

        public decimal TwoXFour { get; set; }

        public decimal TwoXFive { get; set; }

        public decimal ThreeXZero { get; set; }

        public decimal ThreeXOne { get; set; }

        public decimal ThreeXTwo { get; set; }

        public decimal ThreeXThree { get; set; }

        public decimal FourXZero { get; set; }

        public decimal FourXOne { get; set; }

        public decimal FourXTwo { get; set; }

        public decimal FiveXZero { get; set; }

        public decimal FiveXOne { get; set; }

        public decimal FiveXTwo { get; set; }

        public decimal WinOther { get; set; }

        public decimal FlatOther { get; set; }

        public decimal NegativeOthers { get; set; }
    }

    public class MatchOption
    {
        public int Id { get; set; }
        public string Text { get; set; }
    }

    public class MergeCutOdds
    {
        /// <summary>
        /// cutOdd编号
        /// </summary>
        public int CutOddsId { get; set; }
        /// <summary>
        /// 比赛编号
        /// </summary>
        public int MatchId { get; set; }
        /// <summary>
        /// 切片
        /// </summary>
        public int SectionNumber { get; set; }
        /// <summary>
        /// 让球
        /// </summary>
        public string FixOdds { get; set; }
        /// <summary>
        /// 平均胜赔
        /// </summary>
        public decimal CutWinChance { get; set; }
        /// <summary>
        /// 平均平赔
        /// </summary>
        public decimal CutDrawChance { get; set; }
        /// <summary>
        /// 平均负赔
        /// </summary>
        public decimal CutLoseChance { get; set; }
        /// <summary>
        /// 平均返还率
        /// </summary>
        public decimal CutPayOutRate { get; set; }
        /// <summary>
        /// 符合条件的数据条数
        /// </summary>
        public int BaseDataCount { get; set; }

        /// <summary>
        /// 自定义平均胜赔
        /// </summary>
        public decimal MyCutWinChance { get; set; }
        /// <summary>
        /// 自定义平均平赔
        /// </summary>
        public decimal MyCutDrawChance { get; set; }
        /// <summary>
        /// 自定义平均负赔
        /// </summary>
        public decimal MyCutLoseChance { get; set; }
        /// <summary>
        /// 让-4球胜的概率
        /// </summary>
        public decimal LetNegative4BallsMatchWinChance { get; set; }
        /// <summary>
        /// 让-3球胜的概率
        /// </summary>
        public decimal LetNegative3BallsMatchWinChance { get; set; }
        /// <summary>
        /// 让-2球胜的概率
        /// </summary>
        public decimal LetNegative2BallsMatchWinChance { get; set; }
        /// <summary>
        /// 让-1球胜的概率
        /// </summary>
        public decimal LetNegative1BallsMatchWinChance { get; set; }
        /// <summary>
        /// 让+1球胜的概率
        /// </summary>
        public decimal Let1BallsMatchWinChance { get; set; }
        /// <summary>
        /// 让+2球胜的概率
        /// </summary>
        public decimal Let2BallsMatchWinChance { get; set; }
        /// <summary>
        /// 让+3球胜的概率
        /// </summary>
        public decimal Let3BallsMatchWinChance { get; set; }

        /// <summary>
        /// 胜的赔付率
        /// </summary>
        public decimal WinPayOut { get; set; }
        /// <summary>
        /// 平的赔付率
        /// </summary>
        public decimal DrawPayOut { get; set; }
        /// <summary>
        /// 负的赔付率
        /// </summary>
        public decimal LosePayOut { get; set; }


    }
}
